热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

控制组|来宾_你要的docker来了!

篇首语:本文由编程笔记#小编为大家整理,主要介绍了你要的docker来了!相关的知识,希望对你有一定的参考价值。docker基础

篇首语:本文由编程笔记#小编为大家整理,主要介绍了你要的docker来了!相关的知识,希望对你有一定的参考价值。



docker基础


  • 一.容器技术的产生背景
  • 二.docker基础简介
    • 1.docker概述
    • 2,.docker的优势
    • 3.docker的使用场景
    • 4.docker与虚拟化的区别

  • 三.docker架构
  • 四.docker引擎
  • 五.docker三大组件
    • 1.镜像
    • 2.容器(Docker container)
    • 3.仓库(Docker reqistry)

  • 六.底层原理
    • 1.名称空间
    • 2.控制组

  • 七.docker20版本部署
    • 1.环境配置
    • 2.安装依赖包
    • 3.设置阿里云镜像
    • 4.安装docker-ce社区版
    • 5.设置镜像加速
    • 6.网络优化
    • 7.启动,基础常规命令



一.容器技术的产生背景

以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务例如: pid=2 --> python pid=3–>java pid4–>php ,三个服务可能会相互影响
使用者期望将这三个不同的服务,跑在不同的运行时环境中实现相互不影响,同时不会增加服务器成本。

延伸出能否将这三种服务分别封装起来——》KVM虚拟化技术,实现了一个操作系统模拟多个操作系统/不同的运行时环境。
随着技术发展,虚拟化技术开销较大(例如:只要运行一个python脚本,想要使用虚拟化方式实现,还需要安装一个操作系统,并不方便/合理)
延伸出容器技术;
虚拟化层的抽象层(用户层)剥离,使用docker engine来替代(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大减小了开销。
docker引擎对内核版本是有要求的(至少是3.8+)
docker 需要cgroups(Linux内核态中资源管理的模块) 的资源管理功能


二.docker基础简介

1.docker概述

Dcoker是基于容器技术的轻量级虛拟化解决方案,docker是由容器引擎,把linux的cgroup、namespaces等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行Cli、api等) C/s


2,.docker的优势

(1)docker引擎统一了基础设施环境:docker环境------》image------>封装一个简易的操作系统(3.0+G)

(2)docker引擎统一了封装应用(装箱/封装-类比于集装箱)方式:docker镜像一》 images

(3)docker 引擎统一了运行时环境:docker容器一 》基于镜像——》运行为容器(可运行的环境)
实现了一次构建、多次、多处使用


3.docker的使用场景

流程:war jar------>Igithub gitlab私有仓库(代码仓库)----> jenkins ( 测试)
(应用程序封装/构建镜像)一》 运维使用镜像下载,使用容器技术进行运行/发布
可以实现:

(1)打包应用程序简单部署
(2)可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
(3)持续集成和持续交付(CI/CD):开发到测试发布
(4)部署微服务
(5)提供PAAS产品(平台即服务) OpenStack的 云主机类似于阿里云的ECS,属于IAAS;Docker (K8S) 属于PAAS


4.docker与虚拟化的区别


三.docker架构

Docker使用客户端-服务器架构。Docker 客户端与Docker
守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。

Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快

Docker Client:客户端/提供一个与用户交互,展示的平台+管理、控制docker服务端(功能)的工具

Docker客户端( docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker APT。 Docker客户端可以与多个守护程序通信。
Docker daemon:守护进程

Docker 守护程序( dockerd))侦听 Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理pocker服务。
Docker images:镜像

存储镜像的地方,默认在公共的Docker Hub上查找,可以做个人仓库(registry harbor)

容器可以被打包成镜像
Docker container:容器
Docker registry:镜像仓库

存储镜像的地方,默认在公共的Docker Hub上查找,可以做个人仓库(registry harbor)


四.docker引擎

Docker Engine是具有以下主要组件的C/S客户端—服务器应用程序:

server端:服务器是一种长期运行的程序,称为守护程序进程(dockerd命令)
CLIENT端: REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口
通过client客户端传入命令,比如以下:
docker run:运行
docker start:开启
docker rm:删除
与sever端进行交互,控制server端进行应命令的操作


五.docker三大组件

1.镜像

模板;组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础环境(泛指操作系统环境),可以理解为容器的模板


2.容器(Docker container)

基于镜像的一种运行时状态


3.仓库(Docker reqistry)

存放image镜像模板;仓库分类: 1、公共仓库一》docker hub,2、私有仓库registry harbor


六.底层原理

cgroup和namespaces两者构成了docker底层原理


1.名称空间

容器完美的实现了6个名称空问隔离(namespace资源隔离-用容器化技术封装)
mount:文件系统,挂载点
user:操作进程的用户和用户组
pid:进程编号
uts:主机名和主机域
ipc:信号量、消息队列,共享内存(理解,不同的应用调用的时候应该使用不同的内存空间)
net:网络设备、网络协议栈、端口等


2.控制组

Linux上的Docker引擎还依赖于另一种称为控制组
( cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker
Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。


七.docker20版本部署

1.环境配置

[root@localhost ~]# hostnamectl set-hostname docker
[root@localhost ~]# su
[root@docker ~]# systemctl stop firewalld
[root@docker ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@docker ~]# setenforce 0

2.安装依赖包

[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2


3.设置阿里云镜像

[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@docker yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@docker yum.repos.d]#


4.安装docker-ce社区版

[root@docker yum.repos.d]# yum install -y docker-ce


5.设置镜像加速

[root@docker yum.repos.d]# mkdir -p /etc/docker
[root&#64;docker yum.repos.d]# tee /etc/docker/daemon.json <<-&#39;EOF&#39;
>
> "registry-mirrors": ["https://3zj1eww1.mirror.aliyuncs.com"]
>
> EOF

"registry-mirrors": ["https://3zj1eww1.mirror.aliyuncs.com"]

[root&#64;docker yum.repos.d]# systemctl daemon-reload
[root&#64;docker yum.repos.d]# systemctl restart docker
[root&#64;docker yum.repos.d]# cat /etc/docker/daemon.json

"registry-mirrors": ["https://3zj1eww1.mirror.aliyuncs.com"]

[root&#64;docker yum.repos.d]#


6.网络优化

[root&#64;docker yum.repos.d]# vim /etc/sysctl.conf
net.ipv4.ip_forward&#61;1
[root&#64;docker yum.repos.d]# sysctl -p
net.ipv4.ip_forward &#61; 1
[root&#64;docker yum.repos.d]# systemctl restart network

7.启动&#xff0c;基础常规命令

&#xff08;1&#xff09;重启docker

[root&#64;docker yum.repos.d]# systemctl restart docker

&#xff08;2&#xff09;查看docker版本

[root&#64;docker yum.repos.d]# docker -v
Docker version 20.10.8, build 3967b7d

&#xff08;3&#xff09;查看镜像

[root&#64;docker yum.repos.d]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root&#64;docker yum.repos.d]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
[root&#64;docker yum.repos.d]#

&#xff08;4&#xff09;查看容器

[root&#64;docker yum.repos.d]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root&#64;docker yum.repos.d]# docker ps -aq

&#xff08;5&#xff09;查看docker系统级信息

用于显示 docker 的系统级信息&#xff0c;比如内核&#xff0c;镜像数&#xff0c;容器数等

[root&#64;docker yum.repos.d]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.8
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: e25210fe30a0a703442421b0f60afac609f950a3
runc version: v1.0.1-0-g4144b63
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.777GiB
Name: docker
ID: 32SA:LEYD:GEQO:NLQH:VOXC:KMPD:DEJS:TRXP:XPCE:PY2V:AFIU:5B2Y
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://3zj1eww1.mirror.aliyuncs.com/
Live Restore Enabled: false
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

推荐阅读
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 使用Docker安装和运行Nexus
    本文介绍了使用Docker安装和运行Nexus的方法,包括docker-compose.yml配置和启动时可能出现的权限问题解决方法。同时提供了登录控制台验证安装的地址和登录信息。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
author-avatar
mobiledu2502922357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有